<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 1. this的指向 
    全局this指向window 
    普通函数中this指向函数的拥有者
    构造函数中this指向实例化对象
    箭头函数中没有this，this拿的是上一级的this来使用 -->

    <!-- 2.改变this指向
    call apply bind -->

    <script>
      var name = "张献是个小可爱";
      var obj2 = {
        name: "张熊是个大可爱",
      };
      var obj = {
        name: "小明是个小可爱",
        say(val) {
          alert(this.name + val);
        },
      };

      obj.say.call(window, "xian");
      obj.say.apply(obj2, ["xiong"]);
      //call和apply都可以改变this，会让函数立刻执行
      //   区别是传参的时候 call传的是字符串，apply传的是数组

      obj.say.bind(obj2, "xian")();
      //改变this，不会让函数立刻执行
    </script>
  </body>
</html>
